package org.scub.foundation.fournisseur.egicom.core.service.interfaces;

import java.util.List;

import org.scub.foundation.fournisseur.egicom.core.dto.FournisseurCriteresRechercheDto;
import org.scub.foundation.fournisseur.egicom.core.dto.FournisseurDto;
import org.scub.foundation.framework.base.paging.RemotePagingCriteriasDto;
import org.scub.foundation.framework.base.paging.RemotePagingResultsDto;

/**
 * Services permettant de manipuler les contacts du gestionnaire.
 * @author Adrien HAUTOT (adrien.hautot@scub.net)
 */
public interface FournisseurService {

    /**
     * Sauvegarde un contact.
     * @param contact le contact à sauvegarder
     * @return le contact sauvegardé
     */
    FournisseurDto ajouterOuModifierFournisseur(FournisseurDto contact);

    /**
     * Supprime un contact.
     * @param idFournisseur l'identifiant du contact à supprimer
     */
    void deleteFournisseur(Long idFournisseur);

    /**
     * Récupère le contact correspondant à l'identifiant passé en paramètre.
     * @param id identifiant du contact
     * @return le contact trouvé.
     */
    FournisseurDto getFournisseurById(Long id);

    /**
     * Récupère tous les contacts.
     * @return la liste des contacts.
     */
    List<FournisseurDto> getAllFournisseurs();

    /**
     * Service de recherche de contacts par critères.
     * @param criteria les critères pour la recherche du contact
     * @return la liste des contacts qui correspondent aux critères passés en paramètre.
     */
    RemotePagingResultsDto<FournisseurDto> getFournisseursByCriteria(RemotePagingCriteriasDto<FournisseurCriteresRechercheDto> criteria);
}
